package futbol.tacticas.concursantes2007.TacticaTururu;

import java.awt.Point;

import futbol.tacticas.Comando;
import futbol.tacticas.ComandoIrA;
import futbol.tacticas.SituacionJugadores;


public class Portero extends Jugador {

	private final Point CENTRO_PORTERIA = new Point (-160,0);

	private int barrera = -150;				// [ -135 .. -155 ] (x5)
	private int lateral = 20;				// [ 20 .. 26 ] (x2)
	private int factorProximidad = 8;		// [ 4 .. 12 ] (x1)

	// ------------------------------------------- //
	//   S E T T E R S   D E L   G E N E T I C O   //
	// ------------------------------------------- //

	public void setBarrera(int barrera) {
		this.barrera = barrera;
	}

    public void setFactorProximidad (int factorProximidad) {
        if (factorProximidad == 0) this.factorProximidad = 1;
        else this.factorProximidad = factorProximidad;
    }


	public void setLateral(int lateral) {
		this.lateral = lateral;
	}

	// ----------------------------------------- //
	//   M E T O D O S   D E L   P O R T E R O   //
	// ----------------------------------------- //


	public Portero (int dorsal) {
		super (dorsal);
	}

	public Comando command (SituacionJugadores sj) {

		Point bola = sj.getBola();

		int y = (int) (bola.getY() / 2);

        if (y < -lateral) {
            y = -lateral;
        }

        if (y > lateral) {
            y = lateral;
        }

        // si la pelota esta dentro de nuestro radio de accion salimos a por ella
        if (/*sj.getMasCercanoDeBola() == dorsal || */(calcularDistancia(bola, sj.getMisJugadores()[dorsal]) < distanciaIrBola)) {

            return new ComandoIrA(
                    dorsal,
                    bola.getX(),
                    bola.getY());

        // sino "aparentemente" no hay peligro
        } else {

	        // salimos un poco de la porteria
	        return new ComandoIrA(
	                dorsal,
	                barrera + (int) (calcularDistancia (bola, CENTRO_PORTERIA) / factorProximidad),
	                y);
        }

	} // public Comando command(SituacionJugadores sj)

} // public class Portero extends Jugador
